/***************************************************************************
 创建者：          hualei
 开始时间：      2018.09.10
 copyright:(C)    深圳市华友高科有限公司
 修改说明：（每次有修改就添加一条，带有 修改人，修改时间，修改描述）

 ***************************************************************************
 *   MODBUS_FREE 自由导航指令属性轨道文件选择视窗类
 *
 ***************************************************************************/
#ifndef MOVEFREEINSTRUCTIONTRACKVIEW_H
#define MOVEFREEINSTRUCTIONTRACKVIEW_H

#include <QDialog>
#include "movefreeinstructionview_global.h"
#include <QModelIndex>
#include "movefreeinstructionview.h"
#include <QFileSystemModel>
#include <QPoint>
#include <QtGui/QMouseEvent>
//#include <QtGui/QApplication>
#include <QApplication>

class ProgramView;
class MoveFreeInstructionView;

namespace Ui {
class MoveFreeInstructionTrackView;
}

// 轨道文件存放目录
#define D_TRACK_FILE_PATH "/agvwork/AgvFundation/fundation/data/robotData1/program/"

/**
 * @brief The MoveFreeInstructionTrackView class    MODBUS_FREE自由导航指令属性轨道文件选择临时视窗类
 */
class MOVEFREEINSTRUCTIONVIEWSHARED_EXPORT MoveFreeInstructionTrackView : public QDialog
{
    Q_OBJECT

public:
    MoveFreeInstructionTrackView(QDialog *parent = 0);

    /**
     * @brief getInput          获取界面内容
     */
    void getInput();

    /**
     * @brief updateView        更新内容到界面
     */
    void updateView();

    /**
     * @brief changeLanguage     更改语言
     */
    void changeLanguage();

    /**
     * @brief initView          初始化界面
     */
    void initView();


private slots:

    /**
     * @brief on_TrackFile_Cancel_Btn_clicked       点击取消按钮响应槽函数
     */
    void on_TrackFile_Cancel_Btn_clicked();

    /**
     * @brief on_TrackFile_Sure_Btn_clicked         点击确定按钮响应槽函数
     */
    void on_TrackFile_Sure_Btn_clicked();

    /**
     * @brief on_TrackFile_Tree_Widget_clicked      轨道文件列表显示窗口选择文件响应槽函数
     * @param index
     */
    void on_TrackFile_Tree_Widget_clicked(const QModelIndex &index);

signals:

    /**
     * @brief trackFileSeletionView_Sure_Signal     轨道文件选择后确定信号
     * @param trackFilePath                         选择的轨道文件路径
     * @param index                                 模型索引
     */
    void trackFileSeletionView_Sure_Signal(QString trackFilePath, QModelIndex &index);

public:
    /**
     * @brief trackFilePath                 轨道文件
     */
    QString trackFilePath;

    /**
     * @brief programView                   程序编辑主视窗对象
     */
    ProgramView *programView;

    /**
     * @brief moveFreeInstructionView       自由导航指令属性编辑视图对象
     */
    MoveFreeInstructionView *moveFreeInstructionView;

    /**
     * @brief modeIndex                     数据模型索引对象
     */
    QModelIndex modeIndex;

    /**
     * @brief saveFlag  文件是否保存标志
     */
    bool saveFlag;

    /**
     * @brief fileString文件列表
     */
    QStringList fileString;

    /**
     * @brief dirModel文件目录显示列表
     */
    //QDirModel * dirModel;
    QFileSystemModel *dirModel;

    /**
     * @brief index当前文件根目录
     */
    QModelIndex index;

    /**
     * @brief model     抽象项目模型对象
     */
    QAbstractItemModel *model;

private:

    /**
     * @brief mousePressEvent   鼠标点击事件处理函数
     * @param event             鼠标事件
     */
    virtual void mousePressEvent(QMouseEvent*event);

    /**
     * @brief mouseMoveEvent    鼠标移动事件处理函数
     * @param event             鼠标事件
     */
    virtual void mouseMoveEvent(QMouseEvent*event);

    /**
     * @brief mouseReleaseEvent  鼠标释放事件处理函数
     * @param event              鼠标时间
     */
    virtual void mouseReleaseEvent(QMouseEvent *event);

private:
    Ui::MoveFreeInstructionTrackView *ui;

    /**
     * @brief mMoveing      鼠标移动状态
     */
    bool mMoveing;

    /**
     * @brief mMovePosition     操作点位位置
     */
    QPoint mMovePosition;
    
};

#endif // MOVEFREEINSTRUCTIONTRACKVIEW_H
